#include "HashTable.h"
#include "unordered_set.h"
#include "unordered_map.h"

namespace czb 
{

	template<class K>
	struct KeyOfT
	{
		const K& operator()(const K& key)
		{
			return key;
		}
	};

	void func1()
	{
		HashTable<int, const int, KeyOfT<int>, HashFunc<int>> hs;
		int arr[] = { 1,2,3,4,5 };
		for (auto e : arr)
		{
			hs.Insert(e);
		}
		
		for (auto e : arr)
		{
			auto ret = hs.Find(e);
			cout << ret->_data << endl;
		}
		
		for (auto e : hs)
		{
			cout << e << endl;
		}
		

		
	}

	void func2()
	{
		unordered_set<string> s;
		s.Insert("123");
		s.Insert("2");
		s.Insert("23");


		for (auto e : s)
		{
			cout << e << endl;
		}
	}

	void func3()
	{
		unordered_map<string,int> m;
		m.Insert(make_pair("123", 1));
		m.Insert(make_pair("1", 1));
		m.Insert(make_pair("12", 1));

		for (auto e : m)
		{
			cout << e.first << " " << e.second << endl;
		}
	}

}

int main()
{

	czb::func2();
	czb::func3();

	return 0;
}

